#博文爬虫（需要浏览器伪装）
#ps:该网站加载的页面内容是动态变化的，一段时间之后下载的内容不同，结果就是导致乱码
import urllib.request
import re

url="https://blog.csdn.net/"

"""添加了User-Agent,但是使用urllib.urlopen()仍然不能爬→→安装为全局就行了"""
headers=("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36")
opener=urllib.request.build_opener()
opener.addheaders=[headers]
#报头安装为全局！！！不然只能用opener下面的open打开网页
urllib.request.install_opener(opener)

data=urllib.request.urlopen(url).read().decode('utf-8','ignore')#得到首页数据
"""
data=str(response.read(),'utf-8')
response = urllib.request.urlopen('http://www.baidu.com')
html =str(response.read(),'utf-8')
"""
"""
decode的作用是将其他编码的字符串转换成unicode编码，如str1.decode('gb2312')，表示将gb2312编码的字符串str1转换成unicode编码。 
encode的作用是将unicode编码转换成其他编码的字符串，如str2.encode('gb2312')，表示将unicode编码的字符串str2转换成gb2312编码。 
"""
print(data)
pat='<div class="title">.*?<h2>.*?<a href="(.*?)" target="_blank"'
#模式修正符！！！.不能匹配换行符
all_link=re.compile(pat,re.S).findall(data)
print(all_link)
for i in range(len(all_link)):
#为什么不直接用for i in all_link,看似简洁了，但是在后面诸如文件命名、包括GET请求爬取多个页面的时候，你就会发现还是这个方便
    localpath="C:\\Users\\DELL\\Desktop\\python操作文件夹\\博文信息爬取\\" + str(i) + ".html"
    this_link=all_link[i]
    urllib.request.urlretrieve(this_link,localpath.encode('utf-8'))#就算这里编码了，打开的html文件还是乱码哦
    print("第"+str(i)+"篇文章爬取成功!")


#打开的html乱码问题没有解决！！！！！？？？？
